package com.chandon.T00_basic;

import com.chandon.common.Cv;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * 将集合中符合要求元素复制到另一个集合
 * <p>
 * 传统方式
 *      filtAge filtScope中的重复代码过多，使用策略模式优化
 *
 * @author Dong
 * @version 1.0
 * @date 2021-04-12 19:44
 */

public class T01_Why_Lambda {

    public static void main(String[] args) {
        Cv cv1 = Cv.builder().name("yui").age(17).scope(10).build();
        Cv cv2 = Cv.builder().name("asami").age(18).scope(9).build();
        Cv cv3 = Cv.builder().name("asamiyui").age(32).scope(8).build();

        List<Cv> cvList = Arrays.asList(cv1, cv2, cv3);

        // 按照年龄过滤
//        List<Cv> cvs = filtAge(cvList);
        // 按照评分过滤
        List<Cv> cvs = filtScope(cvList);


    }

    static List<Cv> filtAge(List<Cv> cvList) {
        // 按照年龄过滤
        ArrayList<Cv> cvs = new ArrayList<>();
        for (Cv cv : cvList) {
            if (cv.getAge() > 18) {
                cvs.add(cv);
            }
        }

        for (Cv cv : cvs) {
            System.out.println(cv);
        }

        return cvs;
    }

    static List<Cv> filtScope(List<Cv> cvList) {
// 按照评分过滤
        ArrayList<Cv> cvs = new ArrayList<>();
        for (Cv cv : cvList) {
            if (cv.getScope() >= 9) {
                cvs.add(cv);
            }
        }

        for (Cv cv : cvs) {
            System.out.println(cv);
        }

        return cvs;
    }


}
